/**** 此文件说明请看注释 *****/
// 可以用自己项目的请求方法
// 请求配置说明：https://ext.dcloud.net.cn/plugin?id=822
/**** 结束 *****/
const platform = uni.getSystemInfoSync().platform

// 比较版本号
const compareVersion = function (reqV, curV) {
  if (curV && reqV) {
    let arr1 = curV.split('.'),
      arr2 = reqV.split('.')
    let minLength = Math.min(arr1.length, arr2.length),
      position = 0,
      diff = 0
    while (position < minLength && (diff = parseInt(arr1[position]) - parseInt(arr2[position])) == 0) {
      position++
    }
    diff = diff != 0 ? diff : arr1.length - arr2.length
    if (diff > 0) {
      if (position == minLength - 1) {
        return 1
      } else {
        return 2
      }
    } else {
      return 0
    }
  } else {
    return 0
  }
}

export default {
  // 发起ajax请求获取服务端版本号
  getServerNo: (version, isPrompt = false, callback) => {
    let httpData = {
      version: version.versionCode,
      // 版本名称
      versionName: version.versionName,
      // setupPage参数说明（判断用户是不是从设置页面点击的更新，如果是设置页面点击的更新，有不要用静默更新了，不然用户点击没反应很奇怪的）
      setupPage: isPrompt
    }
    if (platform == 'android') {
      httpData.type = 1101
    } else {
      httpData.type = 1102
    }
    /* 接口入参说明
     * version: 应用当前版本号（已自动获取）
     * versionName: 应用当前版本名称（已自动获取）
     * type：平台（1101是安卓，1102是IOS）
     */
    /****************以下是示例*******************/
    // 可以用自己项目的请求方法（接口自己找后台要，插件不提供）
    // 企赋DAO的systemType 11是安卓 12苹果
    const systemType = platform == 'ios' ? 22 : 21 //手动修改系统类型，22为ios，21为android，20为华为
    uni.$u.http
      .get('exp-app-version/getLastVersion/' + systemType, { header: httpData, params: { isPrompt: isPrompt } })
      .then(res => {
        /* res的数据说明
         * | 参数名称        | 一定返回     | 类型        | 描述
         * | -------------|--------- | --------- | ------------- |
         * | versionCode     | y        | int       | 版本号        |
         * | versionName     | y        | String    | 版本名称      |
         * | versionInfo     | y        | String    | 版本信息      |
         * | updateType      | y        | String    | forcibly = 强制更新, solicit = 弹窗确认更新, silent = 静默更新 |
         * | downloadUrl     | y        | String    | 版本下载链接（IOS安装包更新请放跳转store应用商店链接,安卓apk和wgt文件放文件下载链接）  |
         */
        const obj = {
          versionCode: res.code,
          versionName: res.version,
          versionInfo: res.descript,
          updateType: res.updateType || 'forcibly',
          downloadUrl: res.url
        }

        console.log('远程版本：', res.code, res.version)
        //比较版本号
        let iib = compareVersion(version.versionName, res.version)
        if (iib !== 0) {
          // 不为0说明本地版和线上版本号不一样
          //这里还可以做强制更新:如果需要强制更新把 obj.updateType='forcibly'
          callback && callback(obj)
        }
      })
      .catch(err => {
        console.log(456)
      })
    // http
    //   .get('exp-app-version/getLastVersion/' + systemType, httpData, {
    //     isPrompt: isPrompt
    //   })
    //   .then(res => {
    //     /* res的数据说明
    //      * | 参数名称        | 一定返回     | 类型        | 描述
    //      * | -------------|--------- | --------- | ------------- |
    //      * | versionCode     | y        | int       | 版本号        |
    //      * | versionName     | y        | String    | 版本名称      |
    //      * | versionInfo     | y        | String    | 版本信息      |
    //      * | updateType      | y        | String    | forcibly = 强制更新, solicit = 弹窗确认更新, silent = 静默更新 |
    //      * | downloadUrl     | y        | String    | 版本下载链接（IOS安装包更新请放跳转store应用商店链接,安卓apk和wgt文件放文件下载链接）  |
    //      */
    //     const obj = {
    //       versionCode: res.data.code,
    //       versionName: res.data.version,
    //       versionInfo: res.data.descript,
    //       updateType: res.data.updateType || 'forcibly',
    //       downloadUrl: res.data.url
    //     }
    //     console.log('远程版本：', res.data.code, res.data.version)
    //     //比较版本号
    //     let iib = compareVersion(version.versionName, res.data.version)
    //     if (iib !== 0) {
    //       // 不为0说明本地版和线上版本号不一样
    //       //这里还可以做强制更新:如果需要强制更新把 obj.updateType='forcibly'
    //       callback && callback(obj)
    //     }
    //   })
    //   .catch(() => {
    //     console.log(456)
    //   })
    /****************以上是示例*******************/
  },
  // 弹窗主颜色（不填默认粉色）
  appUpdateColor: 'fff',
  // 弹窗图标（不填显示默认图标，链接配置示例如： '/static/demo/ic_attention.png'）
  appUpdateIcon: ''
}
